import type { RowType } from '#/components/FosoTable/type';

import { type VxeGridProps } from '@vben/plugins/vxe-table';
/**
 * 传入的表格数据类型
 * @author Buke
 * @param options 表格配置选项
 * @param options.columns 表格列配置
 * @param options.data 表格数据
 * @returns 包含表格配置、列定义和数据的响应式对象
 */
type optionsType = {
  columns: any[];
  data: RowType[];
  proxyConfig: any;
};

/**
 * 封装VxeTable的Composition API Hook
 * @author Buke
 * @param options 表格配置选项
 * @returns 包含表格配置、列定义和数据的响应式对象
 */
export const useTable: any = (options: optionsType) => {
  const { columns, data, proxyConfig } = options;
  // 表格配置项
  const tableconfig = ref<VxeGridProps<RowType>>({
    columns,
    size: 'medium',
    data,
    rowConfig: {
      // drag: true, // 启用拖拽排序
      isHover: true, // 开启悬浮行高亮
    },
    autoResize: true, // 启用自动调整大小
    keepSource: true,
    exportConfig: {},
    pagerConfig: {
      pageSize: 20, // 每页显示的行数
    },
    proxyConfig,
    toolbarConfig: {
      custom: true,
      export: true,
      import: true,
      refresh: true,
      zoom: true,
    },
    treeConfig: {
      transform: true, // 自动将 parentId 转换为树形结构
      parentField: 'parentId', // 父节点字段名
      rowField: 'id', // 行数据字段名
      lazy: false, // 非懒加载
      indent: 20, // 缩进宽度
    },
    border: true,
    checkboxConfig: {
      highlight: true,
    },
  });
  return {
    tableconfig,
    columns,
    data,
  };
};
